package com.example.generator.controller;

import com.example.generator.entity.GenTemplate;
import com.example.generator.service.GenTemplateService;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/gen-template") // 定义该 Controller 的根路径为 /api/gen-template
public class GenTemplateController {

    @Resource
    private GenTemplateService genTemplateService; // 注入 GenTemplateService，用于处理业务逻辑

    /**
     * 查询所有模板
     *
     * @return 模板列表
     */
    @GetMapping("/list")
    public ResponseEntity<List<GenTemplate>> list() {
        return ResponseEntity.ok(genTemplateService.list()); // 调用 Service 层方法获取所有模板
    }

    /**
     * 根据 ID 查询模板
     *
     * @param id 模板的主键 ID
     * @return 单个模板对象
     */
    @GetMapping("/{id}")
    public ResponseEntity<GenTemplate> getById(@PathVariable Long id) {
        return ResponseEntity.ok(genTemplateService.getById(id)); // 根据 ID 获取模板
    }

    /**
     * 新增模板
     *
     * @param template 模板对象
     * @return 操作结果（成功或失败）
     */
    @PostMapping("/save")
    public ResponseEntity<String> save(@RequestBody GenTemplate template) {
        boolean result = genTemplateService.save(template); // 调用 Service 层方法保存模板
        return result ? ResponseEntity.ok("保存成功") : ResponseEntity.status(500).body("保存失败");
    }

    /**
     * 更新模板
     *
     * @param template 模板对象
     * @return 操作结果（成功或失败）
     */
    @PutMapping("/update")
    public ResponseEntity<String> update(@RequestBody GenTemplate template) {
        boolean result = genTemplateService.updateById(template); // 调用 Service 层方法更新模板
        return result ? ResponseEntity.ok("更新成功") : ResponseEntity.status(500).body("更新失败");
    }

    /**
     * 删除模板
     *
     * @param id 模板的主键 ID
     * @return 操作结果（成功或失败）
     */
    @DeleteMapping("/{id}")
    public ResponseEntity<String> delete(@PathVariable Long id) {
        boolean result = genTemplateService.removeById(id); // 调用 Service 层方法删除模板
        return result ? ResponseEntity.ok("删除成功") : ResponseEntity.status(500).body("删除失败");
    }
}